package com.health.system.dao.system;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Component;

import cn.org.rapid_framework.page.Page;
import cn.org.rapid_framework.page.PageRequest;

import com.health.system.javacommon.base.BaseIbatis3Dao;
import com.health.system.model.system.User;

/**
 * @author modify:pch 2010.5.20
 * 
 */
@Component("userDao")
public class UserDao extends BaseIbatis3Dao<User, java.lang.String> {

	public Class getEntityClass() {
		return User.class;
	}

	public void saveOrUpdate(User entity) {
		if (entity.getId() == null)
			save(entity);
		else
			update(entity);
	}

	public void updateByUserName(User entity) {
		this.getSqlSessionTemplate().update("User.updateByUserName", entity);
	}

	public Page findByPageRequest(PageRequest pageRequest) {
		return pageQuery("User.pageSelect", pageRequest);
	}

	public void updatepassword(String id, String password) {
		Map map = new HashMap();
		map.put("id", id);
		map.put("password", password);
		Object primaryKey = getSqlSessionTemplate().update("User.update2", map);
	}

	/**
	 * @param name
	 *            用户名
	 * @return 用户对象
	 */
	public User getUserByName(String name) {
		User user = (User) getSqlSessionTemplate().selectOne(
				"User.getUserByName", name);
		return user;
	}
	/**
	 * 按登录用户名和机构代码来查询当前操作员的信息
	 * @param name 用户名
	 * @param name 机构代码          
	 * @return 用户对象
	 * @author bzq add 2011-04-15
	 */
	public User getUserByName(String name,String organCode) {
	 	Map map = new HashMap(); 
		map.put("username", name);
		map.put("cpCode", organCode);
		User user = (User) getSqlSessionTemplate().selectOne(
				"User.getUserByMap", map);
		return user;
	}
	/**
	 * @param java.util.Map map
	 *  String username          用户名
	 *  String cpCode            机构代码
	 *  String organcode         机构ID
	 * @return 用户对象
	 * @author bzq add 2011-04-15
	 */
	public User getUserByMap(java.util.Map<String, String> map) {
		User user = (User) getSqlSessionTemplate().selectOne(
				"User.getUserByMap", map);
		return user;
	}
	
	/**
	 * 根据用户名取得该用户所拥有的角色
	 * 
	 * @author pch 2010.6.10
	 * @param userName
	 *            用户名
	 * @return 用户所拥有的角色
	 */
	public List getRoleByUserName(String userName) {
		List list = null;
		if (userName != null) {
			list = getSqlSessionTemplate().selectList("User.getRoleByUserName",
					userName);
		}
		return list;
	}

	/**
	 * 根据用户名取得该用户所拥有的角色
	 * 
	 * @author pch 2010.7.10
	 * @param userName
	 *            用户名
	 * @return 用户所拥有的角色
	 */
	public List getRoleRoleNameByUserName(String userName) {
		List list = null;
		if (userName != null) {
			list = getSqlSessionTemplate().selectList("Role.getRoleByUserName",
					userName);
		}
		return list;
	}
	/**
	 * 根据用户名取得该用户所拥有的角色
	 * 
	 * @author pch 2010.7.10
	 * @param userName 登录名用户名
	 * @param cpCode 登录用户所在机构代码
	 * @return 用户所拥有的角色
	 * @author bzq add 2011-04-15
	 */
	public List getRoleRoleNameByUserName(String userName,String cpCode) {
		List list = null;
		if (userName != null) {
		 	Map map = new HashMap(); 
			map.put("userName", userName);
			map.put("cpCode", cpCode);
			list = getSqlSessionTemplate().selectList("Role.getRoleByMap",map);
		}
		return list;
	}
	public int removeByIdArry(User u) {
		int i=-1;
		i =delete("User.removeByIdArry", u);
		return i;
	}

	/**
	 * 根据用户名更新用户登录次数
	 * 
	 * @param paras
	 *            用户名(userName:用户名,lastloginDate:最后登录时间)
	 */
	public void updateLogincountByUserName(Map<String, Object> paras) {
		if (null != paras) {
			getSqlSessionTemplate().update("User.updateLogincountByUserName",
					paras);
		}
	}

}
